package com.yc.so.utils;

import com.yc.so.bin.SoBoundsConfigurator;
import javafx.geometry.Rectangle2D;
import javafx.stage.Screen;
import javafx.stage.Stage;

import static com.yc.so.utils.BoundsCalculationUtil.MainViewCalculationParameter.*;


/**
 * 边界计算工具
 */
public class BoundsCalculationUtil {

    interface MainViewCalculationParameter  {
       double COORDINATE_COEFFICIENT_X =0.333;
       double COORDINATE_COEFFICIENT_Y =0.205;
       double HEIGHT_COEFFICIENT =0.77;
    }

    interface SearchViewCalculationParameter  {
       double HEIGHT_COEFFICIENT =0.15;
    }

    interface DataDisplayCalculationParameter  {
       double HEIGHT_COEFFICIENT =0.85;
    }

    /**
     * 坐标 y 系数 0.205
     * 坐标 x 系数 0.333
     * 高度系数（相对系统高度） 0.77
     * 坐标 y = 系统可视范围最大坐标 y * 坐标 y 系数
     * 坐标 x = 系统可视范围最大坐标 x * 坐标 x 系数
     * 宽度 width = 系统宽度 * 坐标系数x
     * 高度 height = 宽度 * 高度系数
     * @return
     */
    public static SoBoundsConfigurator getMainPanelBounds(){
        //获取系统可视范围右下角 坐标
        Rectangle2D rectangle2D= Screen.getPrimary().getVisualBounds();
        double maxX = rectangle2D.getMaxX();
        double maxY = rectangle2D.getMaxY();
        //
        SoBoundsConfigurator xy=new SoBoundsConfigurator();
        xy.setY(maxY* COORDINATE_COEFFICIENT_Y);
        xy.setX(maxX* COORDINATE_COEFFICIENT_X);
        xy.setWidth(xy.getX());
        xy.setHeight(xy.getX()*HEIGHT_COEFFICIENT);
        return xy;
    }

    /**
     * 宽度 为总面板宽度
     * 高度系数（相对总面板高度）  0.15
     * 坐标 x = 总面板系数x
     * 坐标 y = 总面板系数y
     * @return
     */
    public static SoBoundsConfigurator getSearchViewBounds(){
        SoBoundsConfigurator mainPanelBounds= getMainPanelBounds();
        SoBoundsConfigurator xy=new SoBoundsConfigurator();
        xy.setY(mainPanelBounds.getY());
        xy.setX(mainPanelBounds.getX());
        xy.setWidth(mainPanelBounds.getWidth());
        xy.setHeight(mainPanelBounds.getHeight()*SearchViewCalculationParameter.HEIGHT_COEFFICIENT);
        return xy;
    }

    /**
     * 宽度 为总面板宽度
     * 高度系数（相对总面板高度）  0.75
     * 坐标 x = 总面板系数x
     * 坐标 y = 搜索面板高
     * @return
     */
    public static SoBoundsConfigurator getDataDisplayBounds(){
        SoBoundsConfigurator mainPanelBounds= getMainPanelBounds();
        SoBoundsConfigurator searchViewBounds= getSearchViewBounds();
        SoBoundsConfigurator xy=new SoBoundsConfigurator();
        xy.setY(searchViewBounds.getHeight());
        xy.setX(mainPanelBounds.getX());
        xy.setWidth(mainPanelBounds.getWidth());
        xy.setHeight(mainPanelBounds.getHeight()*DataDisplayCalculationParameter.HEIGHT_COEFFICIENT);
        return xy;
    }
}
